// package com.cskaoyan.service;
//
// import com.cskaoyan.bean.bo.wx.AddressDeleteBO;
// import com.cskaoyan.bean.bo.wx.WxAddressSaveBO;
// import com.cskaoyan.bean.pojo.*;
// import com.cskaoyan.bean.vo.wx.WxAdressDetailVO;
// import com.cskaoyan.bean.vo.wx.WxAdressVO;
// import com.cskaoyan.dao.RegionMapper;
// import com.cskaoyan.dao.UserAddressMapper;
// import org.apache.shiro.SecurityUtils;
// import org.apache.shiro.subject.Subject;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Service;
// import org.springframework.transaction.annotation.Transactional;
//
// import java.util.ArrayList;
// import java.util.Date;
// import java.util.List;
//
// /**
//  * @author: hdf
//  * @class: AddressServiceImpl
//  */
//
// @Service
// public class AddressServiceImpl implements AddressService {
//
//     @Autowired
//     UserAddressMapper userAddressMapper;
//     @Autowired
//     RegionMapper regionMapper;
//
//
//
//     /**
//      * @author hdf
//      * @description 获取用户地址列表
//      * @return
//      */
//     @Override
//     public List<WxAdressVO> addressList() {
//
//         UserAddressExample userAddressExample = new UserAddressExample();
//         List<UserAddress> userAddresses = userAddressMapper.selectByExample(userAddressExample);
//
//         List<WxAdressVO> wxAdressVOList = new ArrayList<>();
//         for (UserAddress userAddress : userAddresses) {
//
//             //根据每一个userAddress 的 provinceId cityId areaId 查询 具体地址 拼接字符串封装即可
//
//             Integer provinceId = userAddress.getProvinceId();
//             Integer cityId = userAddress.getCityId();
//             Integer areaId = userAddress.getAreaId();
//             Region province = regionMapper.selectByPrimaryKey(provinceId);
//             Region city = regionMapper.selectByPrimaryKey(cityId);
//             Region area = regionMapper.selectByPrimaryKey(areaId);
//             String detailAddress = province.getName() + city.getName() + area.getName() + " " + userAddress.getAddress();
//             WxAdressVO wxAdressVO = new WxAdressVO(userAddress.getIsDefault(), detailAddress, userAddress.getName(), userAddress.getMobile(),
//                     userAddress.getUserId());
//             wxAdressVOList.add(wxAdressVO);
//         }
//
//         return wxAdressVOList;
//     }
//
//
//     /**
//      * @author hdf
//      * @description 获取单个用户的地址信息
//      * @return
//      */
//     @Override
//     public WxAdressDetailVO addressDetail(Integer id) {
//         UserAddress userAddress = userAddressMapper.selectByPrimaryKey(id);
//         Integer provinceId = userAddress.getProvinceId();
//         Integer cityId = userAddress.getCityId();
//         Integer areaId = userAddress.getAreaId();
//         Region province = regionMapper.selectByPrimaryKey(provinceId);
//         Region city = regionMapper.selectByPrimaryKey(cityId);
//         Region area = regionMapper.selectByPrimaryKey(areaId);
//         WxAdressDetailVO wxAdressDetailVO = new WxAdressDetailVO(userAddress.getIsDefault(), userAddress.getAreaId(), userAddress.getAddress(), city.getName(), area.getName(), userAddress.getName(),
//                 userAddress.getMobile(), userAddress.getId(), userAddress.getCityId(), province.getName(), userAddress.getProvinceId());
//         return wxAdressDetailVO;
//     }
//
//
//     /**
//      * @author hdf
//      * @description 保存用户修改或者新建的地址
//      * @return
//      */
//     @Override
//     @Transactional
//     public int addressSave(WxAddressSaveBO wxAddressSaveBO,Integer userId) {
//
//         UserAddress userAddress = new UserAddress();
//
//         userAddress.setName(wxAddressSaveBO.getName());
//         userAddress.setMobile(wxAddressSaveBO.getMobile());
//         userAddress.setProvinceId(wxAddressSaveBO.getProvinceId());
//         userAddress.setCityId(wxAddressSaveBO.getCityId());
//         userAddress.setAreaId(wxAddressSaveBO.getAreaId());
//         userAddress.setAddress(wxAddressSaveBO.getAddress());
//         userAddress.setIsDefault(wxAddressSaveBO.isDefault());
//
//         int id = wxAddressSaveBO.getId();
//
//         if (id != 0){
//             userAddress.setId(id);
//             userAddressMapper.updateByPrimaryKeySelective(userAddress);
//             return id;
//         } else {
//
//             userAddress.setId(null);
//             Date date = new Date();
//             userAddress.setAddTime(date);
//             userAddress.setUpdateTime(date);
//             userAddress.setDeleted(false);
//             userAddress.setUserId(userId);
//             userAddressMapper.insertSelective(userAddress);
//
//
//             UserAddressExample userAddressExample = new UserAddressExample();
//             UserAddressExample.Criteria criteria = userAddressExample.createCriteria();
//             criteria.andUserIdEqualTo(userId).andProvinceIdEqualTo(wxAddressSaveBO.getProvinceId())
//                     .andCityIdEqualTo(wxAddressSaveBO.getCityId()).andAreaIdEqualTo(wxAddressSaveBO.getAreaId())
//                     .andAddressEqualTo(wxAddressSaveBO.getAddress());
//             List<UserAddress> userAddresses = userAddressMapper.selectByExample(userAddressExample);
//             Integer insertId = null;
//             for (UserAddress address : userAddresses) {
//                 insertId = address.getId();
//             }
//             return insertId;
//         }
//     }
//
//     /**
//      * @author hdf
//      * @description 根据pid获得区域列表
//      * @return
//      */
//     @Override
//     public List<Region> regionList(Integer pid) {
//
//         //根据pid查询
//         RegionExample regionExample = new RegionExample();
//         RegionExample.Criteria criteria = regionExample.createCriteria();
//         criteria.andPidEqualTo(pid);
//         List<Region> regions = regionMapper.selectByExample(regionExample);
//         return regions;
//     }
//
//     /**
//      * @author hdf
//      * @description
//      * @return
//      */
//     @Override
//     public void addressDelete(AddressDeleteBO addressDeleteBO) {
//         UserAddress userAddress = new UserAddress();
//         userAddress.setDeleted(true);
//         userAddress.setId(addressDeleteBO.getId());
//         userAddressMapper.updateByPrimaryKeySelective(userAddress);
//     }
//
// }
